The present invention relates to asynchronous serial communication systems and methods. More particularly the present invention relates to communications between computers and serial communication devices using asynchronous serial communication
Perhaps the most common method of communication for computers today is through serial ports. The basic communication structure for a computer having an asynchronous serial communication port for communicating with external devices through modems interfacing to remote devices such as printers or other computers is depicted in FIG. 1. In FIG. 1 a computer 10 communicates, through a serial port connected to modem 12, with remote devices 20 over a communication link 14. Remote devices 20 receive the communication via modem 16. Communication link 14, at the physical layer, is typically a public switched telephone network for at least some portion of the communication link. The computer 10 communicates with the remote devices 20 using one of a variety of known serial communication protocols at a selected baud rate for transmission and reception by modems 12, 16.
Serial communication using personal computers has changed greatly since such computers were originally introduced. In the early days of personal computing, the speeds of modems and other peripheral devices typically matched the ability of their host computer to maintain reliable and efficient connections to them. Over time, however, the processing power of personal computers has increased much more rapidly than modem communication speed capabilities. The increase in modem baud rate capability has been slowed by bandwidth limitations of the physical infrastructure (in particular of the public switched telephone network) and by signal/noise constraints. Accordingly, there has been an increase in the speed of the serial communications ports on computers that has not been matched by an equivalent increase in modem speed. Therefore, serial communication ports on personal computers are typically under-utilized as they are capable of operating faster than any one modem can operate.
In view of the above limitations it is one object of the present invention to provide systems, methods and computer program products for increasing the utilization of serial ports on computers.
It is a further object of the present invention to provide serial communications multiplexing systems, methods and computer program products which interface substantially seamlessly with applications executing on a computer.
It is an additional object of the present invention to provide serial communications multiplexing systems, methods and computer program products which require only limited hardware to upgrade existing computers and networks, while providing independent control of each channel.
In view of these and other objects, the present invention provides methods for increasing the utilization of an asynchronous serial communications port by mulitplexing a plurality of communication pipes established between the user application programs and the serial port. To the user application programs, each pipe is treated as a separate output port. A thread of code is started associated with each pipe. On receipt of data by any pipe, all of the pipes are checked to determine if a predetermined amount of data has been queued for any pipe. If so, a packet of data is created containing queued data from all pipes or null data for a pipe with no queued data. A bitmap is generated specifying which fields contain data and which contain null data. Each field is associated with a specific pipe. The packet is routed over the computer""s serial port to a multiplexer which reads the bitmap, unpacks the data, and routes any contained data to the output port of the multiplexer which is associated with the respective pipe. Each output port of the multiplexer is independently configurable to operate at a baud rate (or other communication parameter such as parity) which is user selectable.
Received data at the multiplexer is similarly packeted for transmission to the computer including a field associated with each output port of the multiplexer. A bitmap is generated indicating which fields contain data and which fields contain null data. A read thread of code executing on the computer receives the packet via the serial port, reads the bitmap, reconstructs the data, and routes the data to the pipe which is associated with the output port of the multiplexer receiving the data.
A multiplexer circuit is provided which supports independent communication setting operations of the output ports as well as packetizing and reconstructing of data for multiplexing the single serial port from the computer. A clock generator provides a plurality of communication clock (baud) rates to the inputs of multiplexers with the rate applied to each asynchronous communication device in the circuit being selected by latches set by a controller which in turn selects the output of multiplexers which are coupled to the clock inputs of the asynchronous communication chips.
In one embodiment of the present invention, a method is provided for providing cooperative processing in an object oriented communication system. The object oriented communication system includes an object oriented computing environment executing on a computer which includes a multiplexer server object for connecting a plurality of applications generating data for transmission over an asynchronous serial communication port to the asynchronous serial communication port. The multiplexor server object includes a first communication pipe object for receiving data from a first one of the plurality of applications and routing data to the asynchronous serial communication port and a second communication pipe object for receiving data from a second one of the plurality of applications and routing data to the asynchronous serial communication port. The first communication pipe object executes in the object oriented computing environment to thereby perform operations including receiving data from a first one of the plurality of applications and queuing received data for routing to the asynchronous serial communication port. The first communication pipe object also determines if a selected amount of received data has been queued by one of the first or the second communication pipe objects and generates a first packet of data for routing to the asynchronous serial communication port when the selected amount of received data has been queued and routes the first packet of data to the asynchronous serial communication port. The second communication pipe object executes in the object oriented computing environment to thereby perform operations including receiving data from a second one of the plurality of applications and queuing received data for routing to the asynchronous serial communication port. The second communication pipe object also determines if the selected amount of received data has been queued by one of the first or the second communication pipe objects and generates a second packet of data for routing to the asynchronous serial communication port when the selected amount of received data has been queued and routes the second packet of data to the asynchronous serial communication port.
In a further embodiment of the present invention, the asynchronous serial communication port is coupled to a multiplexer having a plurality of output ports. The first packet of data and second packet of data are routed to the multiplexer through the asynchronous serial communication port. The first packet of data routed to the multiplexer contains a field associated with each of the plurality of applications. A bitmap field identifying associated fields of the first packet of data which contain data from an associated one of the plurality of applications and associated fields which contain null data is generated. The bitmap field is routed with the first packet of data to the multiplexer. Preferably, the bitmap field is routed to the multiplexer before the first packet of data.
In a further aspect of the present invention, the multiplexer server object includes a multiplexer control object for establishing communications settings for the plurality of output ports. The multiplexer control object executes in the object oriented computing environment to thereby perform operations including; receiving communications settings for at least one of the plurality of output ports; packetizing the received communication settings; routing the packet of received communication settings to the multiplexer through the asynchronous serial communication port; and configuring the at least one of the plurality of output ports responsive to the packet of received communication settings. In one aspect of this embodiment, each of the plurality of output ports has an associated baud rate and a first of the plurality of output ports is configured to a first associated baud rate and a second of the plurality of output ports is configured to a second associated baud rate different from the first associated baud rate.
In yet another aspect, the multiplexer server object further includes a read object for receiving data from the multiplexer through the asynchronous serial communication port and providing the received data to at least one of the plurality of applications. The read object executes in the object oriented computing environment to thereby perform operations including: receiving a data packet from the multiplexer through the asynchronous serial communication port; reconstructing at least one data set from the received data packet; determining a selected one of the plurality of applications to which said data set is addressed; and routing the data set to the selected one of the plurality of applications.
In a further aspect of the present invention, the object oriented computing environment also includes a user interface object for providing user input of communication settings for the plurality of output ports. The user interface object executes in the object oriented computing environment to thereby perform operations including; displaying a user input display on a monitor; receiving user specified communication settings associated with at least one of the plurality of output ports; and providing the user specified communication settings to the multiplexer control object.
In one embodiment of the present invention, the multiplexer device receives data from at least one of the plurality of output ports and determines if a selected amount of data has been received from the plurality of output ports. A packet of data is generated for routing to the multiplexer server object through the asynchronous serial communication port if a selected amount of data has been received from the plurality of output ports. The packet of data is routed to the multiplexer server object through the asynchronous serial communication port. A bitmap field may be generated by the multiplexer identifying associated fields of the packet of data routed to the multiplexer server object which contain data from an associated one of the plurality of output ports and associated fields which contain null data. The bitmap field may be routed with the packet of data routed to the multiplexer server object.
In a further embodiment of the present invention a method of increasing the utilization of an asynchronous serial communication port on a first computer is provided. A first communication directed to the asynchronous serial communication port from a first application executing on a computer is intercepted. A second communication directed to the asynchronous serial communication port from a second application executing on a computer is also intercepted. The first and second communication are packetized to provide a multiplexed data packet. The multiplexed data packet is sent to a multiplexer including a plurality of output ports over the asynchronous serial communication ports. The multiplexed data packet is received at the multiplexer and the first and second communication are separated out. The first communication is routed to a first one of the plurality of output ports for transmission at a first baud rate and the second communication is routed to a second one of the plurality of output ports for transmission at a second baud rate.
In an apparatus related aspect of the present invention an independently configurable serial communication multiplexer circuit is provided. The circuit includes an asynchronous serial communication port and a controller coupled to the asynchronous serial communication port. The controller is coupled to a data bus. A plurality of latches are provided each having an input coupled to the data bus and an output. A first multiplexer is coupled to at least one of the latches and includes inputs and an output which is coupled to a selected one of the first multiplexer inputs responsive to an output of at least one of the plurality of latches. Also provided in the circuit is a second multiplexer having inputs and an output which is coupled to a selected one of the second multiplexer inputs responsive to an output of at least one of the plurality of latches. A clock generator having a plurality of baud rate outputs is coupled to inputs of the first multiplexer and the second multiplexer. A first asynchronous communication adapter having a plurality of data inputs coupled to the data bus and a transmit clock input coupled to the output of the first multiplexer supports a first output port. A second asynchronous communication adapter having a plurality of data inputs coupled to the data bus and a transmit clock input coupled to the output of the second multiplexer provides a second output port. The controller sets outputs of the plurality of latches over the data bus to select one of the plurality of baud rate outputs as the transmit clock input of the first asynchronous communication adapter and one of the plurality of baud rate outputs as the transmit clock input to the second asynchronous communication adapter.
As will be appreciated by those of skill in this art, the above described aspects of the present invention, while primarily described in terms of methods, may also be provided as apparatus or computer program products.
The present invention provides systems, methods and computer program products which enable a serial port on a computer to be utilized efficiently by overcoming limitations on the throughput of the serial port caused by downstream rate limited devices such as modems. The port may operate at high baud rates carrying multiplexed data to operate a plurality of downstream communications channels which would otherwise be unable to support the capabilities of the serial port.